package com.yunxin.core.application.service;

import com.yunxin.core.application.command.channel.*;

/**
 * @author zero°
 * @since 2023-07-12
 */
public interface ChannelApplicationAdminService {

    /**
     * 新增渠道
     * @param command command
     * @return  boolean
     */
    boolean addChannel(AddChannelCommand command);

    /**
     * 编辑渠道
     * @param command command
     * @return  boolean
     */
    boolean updateChannel(UpdateChannelCommand command);

    /**
     * 新增渠道推广基础信息
     * @param command command
     * @return Long 渠道推广id
     */
    Long addChannelPromotionBasicInfo(AddChannelPromotionBasicInfoCommand command);

    /**
     * 更新渠道推广基础信息
     * @param command command
     * @return  boolean
     */
    boolean updateChannelPromotionBasicInfo(UpdateChannelPromotionBasicInfoCommand command);

    /**
     * 操作渠道推广连接配置（新增/更新）
     * @param command command
     * @return  boolean
     */
    boolean operateChannelPromotionLinkConfig(ChannelPromotionLinkConfigOperateCommand command);

    /**
     * 操作渠道推广客户配置（新增/更新）
     * @param command command
     * @return  boolean
     */
    boolean operateChannelPromotionCustomConfig(ChannelPromotionCustomConfigOperateCommand command);

    /**
     * 操作渠道推广单价配置（新增/更新）
     * @param command command
     * @return  boolean
     */
    boolean operateChannelPromotionUnitPriceConfig(ChannelPromotionUnitPriceConfigOperateCommand command);

    /**
     * 更新渠道推广状态
     * @param command command
     * @return  boolean
     */
    boolean updateChannelPromotionStatus(UpdateChannelPromotionStatusCommand command);

    /**
     * 新增渠道类型
     * @param command command
     * @return  boolean
     */
    boolean addChannelType(AddChannelTypeCommand command);

    /**
     * 编辑渠道类型
     * @param command command
     * @return  boolean
     */
    boolean updateChannelType(UpdateChannelTypeCommand command);

    /**
     * 关联弹窗
     * @param command command
     * @return boolean
     */
    boolean relevancePopup(ChannelPopupCommand command);

    /**
     * 操作渠道推广推广api客户配置（新增/更新）
     * @param command command
     * @return boolean
     */
    boolean operateChannelPromotionApiCustomerConfig(ChannelPromotionApiCustomerConfigOperateCommand command);

    /**
     * 新增渠道推广商户配置
     * @param command command
     * @return  boolean
     */
    boolean operateChannelPromotionMerchantConfig(ChannelPromotionMerchantConfigOperateCommand command);

    /**
     * 新增渠道预付款记录
     * @param command command
     * @return  boolean
     */
    boolean addChannelAdvanceChargeRecord(AddChannelAdvanceChargeRecordCommand command);

    /**
     * 编辑渠道预付款记录
     * @param command command
     * @return  boolean
     */
    boolean updateChannelAdvanceChargeRecord(UpdateChannelAdvanceChargeRecordCommand command);

}
